package br.com.manutencao.managedbeans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;

import br.com.manutencao.entities.Peca;
import br.com.manutencao.repositories.PecaRepository;

@ManagedBean(name="peca")
@SessionScoped
public class PecaBean implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private String nome;
	
	PecaRepository repositorio = new PecaRepository();
	
	private List<Peca> tabelaPecas = new ArrayList<Peca>();
	
	private String descricao;
	
	private int quantidade;
	
	private Integer pecaId;
	
	private float valor;
	
	private Peca peca = new Peca();
	
	public String salvaPeca(){
		
		Peca peca = new Peca();
		peca.setNome(nome);
		peca.setDescricao(descricao);
		peca.setQuantidade(quantidade);
		peca.setValor(valor);

		
		repositorio.adiciona(peca);
		
		return "peca-success";
	}
	
	public String alteraAction() {

		peca.setNome(nome);
		peca.setDescricao(descricao);
		repositorio.altera(peca);

		return "peca-success";
	}
	public String apagaPeca() {
		Peca peca = new Peca();
		
		peca = repositorio.buscaPorId(pecaId);
		
		repositorio.delete(peca);

		return "peca-success-rem";
	}
	
	public String alteraForm() {
		peca = repositorio.buscaPorId(pecaId);

		nome = peca.getNome();
		descricao = peca.getDescricao();

		return "peca-form-alt";
	}

	//getters and setters
	
	public Collection<SelectItem> getbuscaPecas() {
		
		Collection<SelectItem>  pecasSelect = new ArrayList<SelectItem>();
		
		Collection<Peca> pecas = repositorio.buscaTodos();
		for (Peca peca : pecas) {
			SelectItem select = new SelectItem();
			select.setLabel(peca.getNome());
			select.setValue(peca.getId());
			pecasSelect.add(select);
		}
		return pecasSelect;
		
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public int getQuantidade() {
		return quantidade;
	}

	public void setQuantidade(int quantidade) {
		this.quantidade = quantidade;
	}

	public float getValor() {
		return valor;
	}

	public void setValor(float valor) {
		this.valor = valor;
	}

	public Integer getPecaId() {
		return pecaId;
	}

	public void setPecaId(Integer pecaId) {
		this.pecaId = pecaId;
	}

	public List<Peca> getTabelaPecas() {
		tabelaPecas = (List<Peca>) repositorio.buscaTodos();
		return tabelaPecas;
	}

	public void setTabelaPecas(List<Peca> tabelaPecas) {
		this.tabelaPecas = tabelaPecas;
	}
	
	
	
}
